印 刷


ページ設定
印刷のページレイアウトの設定を行うには、PageSetup
プロパティ(オブジェクト)を使用します。
ページ設定属性 (左余白、下余白、用紙サイズなど) を、プロパティの値として設定します。下表は、Excel
の「ページ設定」ダイアログボックスにある「ページ」「余白」「ヘッダー/フッター」「シート」の各パネルの内容を表したものです。
ページ設定で複数のプロパティを同時に設定するときは、With ステートメントを使うと便利です。
With ActiveSheet.PageSetup
<設定内容(下表の必要項目)>
End With
[ 指定例:セルA1:C10の範囲を縦位置で印刷します ]
With ActiveSheet.PageSetup
.PrintArea = "$A1:$C$10"
.Orientation = xlPortrait
End With
下表のプロパティの値は、PrintQuality、余白関係を除いて既定値(何も指定していない状態)です。
設定内容 |
プロパティと値の内容と意味 |
「ページ」パネル関係 |
印刷の向き |
Orientation = xlPortrait
xlPortrait (縦)、xlLandscape (横) |
拡大縮小印刷 |
Zoom = 100
縦または横が1ページに収まらないシートを印刷するときに、縦または横を何ページ分で収めるかを指定するときは、Zoom
= False に設定し、下記により縦・横を指定します。
FitToPagesWide = <横の頁数>
FitToPagesTall = <縦の頁数> |
用紙サイズ |
PaperSize = xlPaperA4
用紙の大きさを指定します。指定内容は、PaperSize
プロパティのヘルプで確認してください。 |
印刷品質 |
PrintQuality = (1)
平方向の印刷品質 (1) または垂直方向の印刷品質 (2) を指定します。プリンタによっては、垂直方向の印刷品質を制御していない場合がありますので、通常は指定しません。 |
先頭ページ番号 |
FirstPageNumber = xlAutomatic
印刷するシートの先頭ページの番号を設定します。xlAutomatic
の場合、自動的に先頭ページの番号が選択されます。 |
「余白」パネル関係 |
上余白 |
TopMargin = Application.CentimetersToPoints(2.5)
余白は、ポイント単位です。下記はポイント単位に変換する命令です
CentimetersToPoints → センチメートルからポイントに変換
InchesToPoints → インチからポイントに変換
以下、余白について同じです。 |
ヘッダー余白 |
HeaderMargin = Application.CentimetersToPoints(1) |
左余白 |
LeftMargin = Application.CentimetersToPoints(2) |
右余白 |
RightMargin = Application.CentimetersToPoints(2) |
下余白 |
BottomMargin = Application.CentimetersToPoints(2.5) |
フッター余白 |
FooterMargin = Application.CentimetersToPoints(1) |
ページ中央(水平) |
CenterHorizontally = False
True にすると、データ印刷部分 (余白を除く)を水平方向の中央寄せ にして印刷します。 |
ページ中央(垂直) |
CenterVertically = False
True にすると、データ印刷部分 (余白を除く)を垂直方向の中央寄せ にして印刷します。 |
「ヘッダー/フッター」パネル関係 |
左側ヘッダー |
LeftHeader = ""
ヘッダー/フッターの指定方法は、次項の「ヘッダー/フッターの書式コードと内容を参照してください。以下ヘッダー/フッターについて同じ。 |
中央部ヘッダー |
CenterHeader = "" |
右側ヘッダー |
RightHeader = "" |
左側フッター |
LeftFooter = "" |
中央部フッター |
CenterFooter = "" |
右側フッター |
RightFooter = "" |
「シート」パネル関係 |
印刷範囲 |
PrintArea = ""
印刷するセル範囲を、コード記述時の言語の A1 形式の文字列で設定します。文字列型 (String) の値を使用します。 |
行のタイトル |
PrintTitleRows = ""
印刷が複数ページにわたるとき、各ページの上端に常に表示するセルを含む行を設定します。文字列型 (String) の値を使用します。行の一部だけを指定しても、行全体が選択されます。 |
列のタイトル |
PrintTitleColumns = ""
印刷が複数ページにわたるとき、各ページの左端に常に表示するセルを含む列を設定します。文字列型 (String)
の値を使用します。列の一部だけを指定しても、列全体が選択されます。 |
枠線印刷 |
PrintGridlines = False
True にすると、セルの枠線を印刷します。 |
白黒印刷 |
BlackAndWhite = False
True にすると、印刷対象を白黒で印刷します。 |
簡易印刷 |
Draft = False
True
にすると、印刷時にシートのグラフィックスを印刷しません。 |
行列番号印刷 |
PrintHeadings = False
True にすると、シートの行番号と列番号を印刷します。 |
コメント印刷 |
PrintComments = xlPrintNoComments
シートのコメントの表示方法を指定します。
xlPrintNoComments → コメントを印刷しません。
xlPrintInPlace →
画面に表示されているコメントだけを印刷します。
xlPrintSheetEnd →
印刷の最後に別紙でコメントだけ印刷します。 |
ページの方向 |
Order = xlDownThenOver
縦・横複数ページにわたって印刷されるときに、ページ番号を付ける順番を設定します。
xlDownThenOver → 左から右
xlOverThenDown → 上から下 |
処理内容:シートを 1 ページの幅と高さに収まるように縮小印刷します
Sub PageSetup_1()
With Worksheets("Sheet1").PageSetup
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
End Sub
処理内容:シートの幅を1ページに収まるように縮小印刷します
Sub PageSetup_2()
With Worksheets("Sheet1").PageSetup
.Zoom = False '---拡大・縮小率を指定しない
.FitToPagesTall = False '---縦方向は指定しない
.FitToPagesWide = 1 '---横方向 1 ページで印刷
End With
End Sub
処理内容:シートの高さを1ページに収まるように縮小印刷します
Sub PageSetup_3()
With Worksheets("Sheet1").PageSetup
.Zoom = False '---拡大・縮小率を指定しない
.FitToPagesTall = 1 '---縦方向 1 ページで印刷
.FitToPagesWide = False '---横方向は指定しない
End With
End Sub


ヘッダー/フッターの設定
ヘッダーフッターには、文字だけでなく、ファイル名や日付、日時、ページ番号なども設定することができます。下表は、ヘッダー/フッターに指定できる書式コードを示したもので、これらを組み合わせて指定します。なお、VBA
のコード記述に際しては、それぞれのコードを[" "]で囲みます。
書式コード |
内 容
|
&L |
このコードに続く文字列を左詰めに配置します。 |
&C |
このコードに続く文字列を中央揃えに配置します。 |
&R |
このコードに続く文字列を右詰めに配置します。 |
&E |
文字列を二重下線付きで印刷します。 |
&X |
上付き文字を印刷します。 |
&Y |
下付き文字を印刷します。 |
&B |
文字列を太字で印刷します。 |
&I |
文字列を斜体で印刷します。 |
&U |
文字列を下線付きで印刷します。 |
&S |
文字列を取り消し線付きで印刷します。 |
&D |
現在の日付を印刷します。 |
&T |
現在の時刻を印刷します。 |
&F |
ファイルの名前を印刷します。 |
&A |
シート見出し名を印刷します。 |
&P |
ページ番号を印刷します。 |
&P+ <数値> |
ページ番号に 指定した <数値>
を加えた値を印刷します。 |
&P- <数値> |
ページ番号から指定した <数値>
を引いた値を印刷します。 |
&& |
アンパサンド (&) を 1 つ印刷します。 |
& "<Font名>" |
指定したフォントで文字を印刷。フォント名は、必ず半角の二重引用符 (")
で囲みます。 |
&nn |
指定したフォント サイズで文字を印刷。nn には、ポイント数を表す 2
桁の数値を指定します。 |
&N |
ファイルのすべてのページ数を印刷します。 |


処理内容:センターヘッダーにタイトル(フォント→MS 明朝、太字、10ポイント)を指定
Sub Header_1()
Worksheets("Sheet1").PageSetup.CenterHeader = "&""MS 明朝,太字""&10タイトル"
End Sub
処理内容:センターヘッダーのタイトル(フォント→MS 明朝、太字、10ポイント)を変数で指定
Sub Header_2()
Dib HeaderTitle As String()
HeaderTitle = "タイトル"
Worksheets("Sheet1").PageSetup.CenterHeader = "&""MS 明朝,太字""&10" & HeaderTitle
End Sub
処理内容:ライトヘッダーに日付と時刻を指定
Sub Header_3()
Worksheets("Sheet1").PageSetup.RightHeader = "&D&T"
End Sub
処理内容:センターフッターにページ番号と総ページ数を指定
Sub Footer_1()
Worksheets("Sheet1").PageSetup.CenterFooter = "&P /&N "
End Sub
処理内容:ライトフッターにファイル名とシート名を指定
Sub Footer_2()
Worksheets("Sheet1").PageSetup.RightFooter = "&F /&A"
End Sub


印刷範囲の設定
処理内容:印刷するセル範囲(B2:F10)を指定します
Sub PrintArea_1()
ActiveSheet.PageSetup.PrintArea = "$B$2:$F$10"
End Sub
処理内容:印刷する行範囲(1行目から10行目まで)を指定します
Sub PrintArea_2()
ActiveSheet.PageSetup.PrintArea = "$1:$10"
End Sub
処理内容:印刷する列範囲(D列からH列まで)を指定します
Sub PrintArea_3()
ActiveSheet.PageSetup.PrintArea = "$D:$H"
End Sub
処理内容:複数の印刷範囲(B2:E7 までと B9:E13 まで)を指定します
Sub PrintArea_4()
ActiveSheet.PageSetup.PrintArea = "$B$2:$E$7,$B$9:$E$13"
End Sub


処理内容:セルB1を基準とするリスト範囲を指定します
Sub PrintArea_5()
Worksheets("Sheet1").Select
Range("B1").CurrentRegion.Select
ActiveSheet.PageSetup.PrintArea = Selection.Address
End Sub
処理内容:A列の最終行を調べてA2からBA最終行までを指定します
Sub PrintArea_6()
Worksheets("Sheet1").Select
LRow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "A2:BA" & LRow
End Sub
処理内容:Cells」に変数を利用した印刷範囲を指定します
Sub PrintArea_7()
Dim YEND As Long,XEND As Long
Worksheets("Sheet1").Select
Cells(1, 1).CurrentRegion.Select
YEND = Selection.Row + Selection.Rows.Count - 1
XEND = Selection.Column + Selection.Columns.Count - 1
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(YEND, XEND)).Address
End Sub
処理内容:印刷範囲をマウスで指定します
Sub PrintArea_8()
Dim pArea As Range
Worksheets("Sheet1").Select
Prompt = "印刷範囲をマウスでドラッグして下さい。"
Set pArea = Application.InputBox(Prompt, Type:=8)
If pArea Is Nothing Then Exit Sub
ActiveSheet.PageSetup.PrintArea = pArea.Address
End Sub
処理内容:印刷範囲罫線を消去します
Sub PrintArea_9()
Worksheets("Sheet1").Select
ActiveSheet.PageSetup.PrintArea = ""
End Sub


改頁位置の設定
処理内容:改ページを設定(水平・・・指定セルの上)します
Sub PageBreaks_1()
Worksheets("Sheet1").Select
ActiveSheet.HPageBreaks.Add Before:=ActiveCell
End Sub
処理内容:改ページを設定(垂直・・・指定セルの左)します
Sub PageBreaks_2()
Worksheets("Sheet1").Select
ActiveSheet.VPageBreaks.Add Before:=ActiveCell
End Sub
処理内容:行 50 の上に、手動改ページを設定します
Sub PageBreaks_3()
Worksheets("Sheet1").Rows(50).PageBreak = xlPageBreakManual
End Sub
処理内容:列 Hの左に、手動改ページを設定します
Sub PageBreaks_4()
Worksheets("Sheet1").Columns("J").PageBreak = xlPageBreakManual
End Sub
処理内容:A列のコードがかわるときに改ページします
Sub PageBreaks_5()
Dim R1 As Integer,R2 As Integer,Data1 As String,Data2 As String
Worksheets("Sheet1").Select
R1 = 2
R2 = R1
Data1 = Cells(R1, 1)
With ActiveSheet
.PageSetup.PrintTitleRows = "$1:$1" ' タイトル表示行
Do
Do
Data2 = Data1
R1 = R1 + 1
Data1 = Cells(R1, 1)
Loop Until Data1 <> Data2
.PageSetup.PrintArea = Format(R2) & ":" & Format(R1 - 1)
.PrintPreview
R2 = R1
Loop Until Data1 = ""
.PageSetup.PrintArea = False
.PageSetup.PrintTitleRows = False
End With
End Sub
処理内容:A列のコードがかわるときに改ページを設定して印刷します
Sub PageBreaks_6()
Dim lRow As Long,code As Variant
Worksheets("Sheet1").Select
Cells.PageBreak = xlPageBreakNone
lRow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
code = Cells(2, 1).Value
For Each r1 In Range(Cells(2, 1), Cells(lRow, 1))
If r1.Value <> code Then
Rows(r1.Row).PageBreak = xlPageBreakManual
code = r1.Value
End If
Next
ActiveSheet.PrintOut
Cells.PageBreak = xlPageBreakNone
End Sub
処理内容:縦の改ページ数を取得します
Sub PageBreaks_7()
MsgBox Worksheets("Sheet1").VPageBreaks.Count
End Sub
処理内容:横の改ページ数を取得します
Sub PageBreaks_8()
MsgBox Worksheets("Sheet1").HPageBreaks.Count
End Sub
処理内容:シートの印刷ページ数を取得します
Sub PageBreaks_9()
MsgBox "印刷全ページ数は = " & (ActiveSheet.HPageBreaks.Count + 1) * _
(ActiveSheet.VPageBreaks.Count + 1)
End Sub
処理内容:改ページを解除します
Sub PageBreaks_10()
Worksheets("Sheet1").Cells.PageBreak = xlPageBreakNone
End Sub


印刷方法の設定
印刷に際して、対象となるブックやシート、印刷ページ範囲・部数などを設定します。Excel
メニューの「ファイル」「印刷」を選択したときに表示される「印刷」ダイアログボックスの内容を指定します。
印刷の実行は、PrintOut メソッドを使用します。
[ PrintOut メソッドの構文 ]
expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)
expression
では、印刷の対象となるブックやシートを指定します。
選択した部分 ・・・・ Selection
選択したシート ・・・ Activesheet
ブック全体 ・・・・・・・ ActiveWorkbook
PrintOut メソッドの引数とその内容は次のとおりです。
引 数 |
内 容 |
From |
省略可能です。印刷開始ページ番号を指定します。既定値は
1 です。 |
To |
省略可能です。印刷終了ページ番号を指定します。 |
Copies |
省略可能です。印刷部数を指定します。既定値は
1 です。 |
Preview |
省略可能です。True のときに、印刷実行前に印刷プレビューを実行します。False、または省略すると、直ちに印刷を行います。 |
ActivePrinter |
省略可能です。アクティブなプリンタの名前を指定します。 |
PrintToFile |
省略可能です。True
のとき、ファイルへ出力します。引数 PrToFileName が省略された場合、出力先のファイル名を指定するためのダイアログ ボックスを表示します。 |
Collate |
省略可能です。True のときは、部単位で印刷します。 |
PrToFileName |
省略可能です。引数 PrintToFile が True の場合、この引数に印刷したいファイルの名前を指定します |


処理内容:印刷するシートをプレビューで確認します
Sub PrintOut_1()
Worksheets("Sheet1").Select
ActiveSheet.PrintPreview
End Sub
処理内容:1ページから 5 ページまで 2 部(部単位)印刷します
Sub PrintOut_2()
Worksheets("Sheet1").Select
ActiveSheet.PrintOut From:=1 To:=5 Copies:=2 Collate:=True
ActiveSheet.PageSetup.PrintArea = "A2:BA" & LRpw
End Sub
処理内容:ックの任意のシート(シート名「Sheet1」と「Sheet2」)を一括して印刷します
Sub PrintOut_3()
Sheets(Array("Sheet1", "Sheet2")).PrintOut
End Sub
処理内容:選択範囲を印刷します
Sub PrintOut_4()
Worksheets("Sheet1").Select
Range("A1:C5").PrintOut
End Sub
処理内容:ブックのシート全部を印刷します
Sub PrintOut_5()
ActiveWorkbook.Worksheets.PrintOut
End Sub
処理内容:奇数・偶数ページ毎に分けて印刷します
Sub PrintOut_6()
Dim pSelect As String, Num As Integer, tPage As Integer
pSelect = "印刷方法を番号で指定してください" & vbCrLf & _
"1.奇数ページ 2.偶数ページ"
Num = Application.InputBox(pSelect, Title:="印刷方法選択")
tPage = (ActiveSheet.HPageBreaks.Count + 1) * _
(ActiveSheet.VPageBreaks.Count + 1)
If Num = 1 Then j = 1
ElseIf Num = 2 Then j = 2
Else: Exit Sub
End If
For i = j To tPage Step 2
ActiveSheet.PrintOut From:=i, To:=i
Next i
End Sub

